/**
 * Copyright (C), 2015-2019, XXX有限公司
 * FileName: PayStrategy
 * Author:   zhouheng
 * Date:     2019/5/14 23:47
 * Description: 支付方式策略抽象类
 * History:
 * <author>          <time>          <version>          <desc>
 * 作者姓名           修改时间           版本号              描述
 */
package com.star.pay.service.core.strategy;

import com.star.pay.bean.PayServiceRequest;
import com.star.pay.service.core.exception.PayException;

import javax.annotation.PostConstruct;
import java.util.HashMap;
import java.util.Map;

/**
 * 〈一句话功能简述〉<br> 
 * 〈支付方式策略抽象类〉
 *
 * @author zhouheng
 * @create 2019/5/14
 * @since 1.0.0
 */
public abstract class PayStrategy {
    public static Map<String,PayStrategy> map = new HashMap<String, PayStrategy>();

    @PostConstruct
    public void init(String payChannel){
        map.put(payChannel,this);
    }

    /**
     * @description: 调用对应支付平台组装支付请求报文
     * @date: 2019/5/15 0:13
     * @author:zhouheng
     */
    public abstract String generatePrepalOrder(PayServiceRequest payServiceRequest) throws PayException;

    /**
     * @description: 获取支付渠道
     * @date: 2019/5/15 0:16
     * @author:zhouheng
     */
    public abstract String getPayChannel();


}